Transmission Control Protocol (TCP) provides a communication service between application programs of a transmitting network device and a receiving network device using the Internet Protocol (IP). In particular, when a transmitting network device transmits a chunk of data across a wide area network (e.g. Internet), application layer software on the transmitter network device issues a request using the TCP layer. The TCP layer handles routing and SEND/ACK details to ensure delivery of the data to the receiving network device.
Due to network congestion, traffic load balancing or other unpredictable network behavior can cause data packets to be lost, duplicated, or delivered out of order between the transmitting and receiving network devices. The TCP layer detects these problems, requests retransmission of lost packets, rearranges out-of-order packets, and/or minimizes network congestion to reduce the occurrence of the other delivery problems. Once the receiving network device has reassembled data packets sent from the transmitting network device, it passes the data packets to the application program running on the network device.
When data packets are transmitted between the transmitting and receiving network devices, rate or traffic shaping is used by a rate shaper of the transmitting network device to control the rate of flow at which data is transmitted. Typically, the receiving network device continually informs the transmitting network device as to how much data it can receive. When the receiving network device's buffer fills up with data, the next acknowledgment which it sends to the transmitting network device notifies it to suspend or stop sending more data until the receiving network device is able to process the already received data packets and therefore catch up.
Network performance is maintained by using Quality of Service (QoS) procedures and implementations performed by the rate shaper, such as a QoS queue. Typically, the transmitting device packetizes data packets in accordance with TCP and sends those packetized or written data packets to the QoS queue. The QoS queue stores the packetized packets and buffers them before transmitting them to control the traffic flow based on predetermined handling parameters. However, this process results in Round Trip Time (RTT) variance as well as latency jitter as the transmitting device is unable to control when to transmit of the data packet after it has been written and sent to the QoS queue.
What is needed is a system and method which delays packetization of data packets to occur immediately before the data packets are to be transmitted.